Unmanned Autonomous Vehicles (UAVS) or “drones” are increasingly ready for a range of compelling services and tasks, e.g., drone package delivery, photogrammetry, and remote internet access, to name a few. However, many current limitations of drone abilities are not due to hardware capabilities, but the complexities faced by end users to create and manage autonomous workflows. Current tools for controlling drones generally allow the user to define only very specific autonomous tasks, for example, having the drone visit a series of GPS coordinate waypoints, maintaining the drone in a selected region (“bounding box”), or allow flight along a non-linear motion (e.g., a circle or a spline curve). While these tools require only limited hands-on experience, they are functionally limited and do not support new applications. On the other end of the spectrum, certain manufactures have released low-level APIs to allow end-users to directly program their drones. However, writing a sophisticated drone program to support a complex multi-step task is challenging often requiring days-to-months of effort even for experienced software engineers. Thus, what is needed is an alternative programming methodology for helping novice drone users implement complex drone scenarios in a quick and reliable fashion.